#ifndef INIT_H
#define INIT_H
#include <ntddk.h>
#include <ntdddisk.h>

typedef struct _ALGORITM_INF {
	unsigned char KeyLength;
	unsigned char Key[64], Vector[32];
} ALGORITM_INF, *PALGORITM_INF;


typedef struct _DISK_INFO {
	UNICODE_STRING FilePath;     // No. of root directory entries
	//UNICODE_STRING DriveLetter; // Drive letter to be used
	DISK_GEOMETRY_EX DiskGeometryEx;
	ALGORITM_INF AlgoritmInf;
} DISK_INFO, *PDISK_INFO;

typedef struct _DEVICE_EXTENSION {
	PDEVICE_OBJECT      FunctionDeviceObject;               // Back pointer to device object
	//PDEVICE_OBJECT      LowerDeviceObject;          // Target device object
	//PDEVICE_OBJECT      PhysicalDeviceObject;       // Physica device object
	IO_REMOVE_LOCK      RemoveLock;                 // Remove lock to avoid abnormal device removal
	ULONG               Flags;                      // General device flag
	DISK_INFO           DiskInfo;                // Disk parameters from the registry
	UNICODE_STRING      SymbolicLink;               // Dos symbolic name; Drive letter
	PHANDLE				FileHandle;
	ULONG AAAA;
} DEVICE_EXTENSION, *PDEVICE_EXTENSION;
#endif